@pisell/private-materials 6.2.35 → 6.2.37
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/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +1 -1
- package/build/lowcode/preview.js +13 -29
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +6 -6
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +8 -8
- package/es/components/appointmentBooking/components/Content/index.js +1 -1
- package/es/components/appointmentBooking/components/Content/index.less +3 -3
- package/es/components/appointmentBooking/components/Services/index.js +2 -2
- package/es/components/appointmentBooking/index.js +8 -2
- package/es/components/booking/components/voucher/index.js +5 -0
- package/es/components/booking/deposit/ClientItem/index.js +1 -1
- package/es/components/booking/deposit/DepositItem/index.js +1 -1
- package/es/components/booking/forms/single/RenderValueById.d.ts +1 -0
- package/es/components/booking/forms/single/RenderValueById.js +68 -17
- package/es/components/booking/forms/single/index.less +67 -1
- package/es/components/booking/hooks/useQuotation.js +1 -1
- package/es/components/booking/info/clientVariant/utils.d.ts +2 -0
- package/es/components/booking/info/clientVariant/utils.js +7 -0
- package/es/components/booking/info/clientVariant/vertical/index.js +3 -2
- package/es/components/booking/info2/service/addService/utils.js +2 -1
- package/es/components/booking/info2/service/addTimeModal/index.js +0 -1
- package/es/components/booking/info2/service/editService/index.js +37 -29
- package/es/components/booking/info2/utilsByBooking.js +4 -4
- package/es/components/booking/locales.d.ts +3 -0
- package/es/components/booking/locales.js +6 -3
- package/es/components/booking/materiels/duration/index.js +1 -1
- package/es/components/booking/materiels/startTime/index.d.ts +1 -0
- package/es/components/booking/materiels/startTime/index.js +1 -1
- package/es/components/booking/utils.js +3 -3
- package/es/components/eftposPay/amount.d.ts +1 -1
- package/es/components/eftposPay/device.d.ts +1 -1
- package/es/components/eftposPay/store/index.d.ts +3 -3
- package/es/components/eventBooking/index.js +8 -1
- package/es/components/productSelect/components/TabProduct/index.js +7 -2
- package/es/components/schedules/utils.d.ts +1 -1
- package/es/components/shoppingCart/components/Cart/Product.js +2 -1
- package/es/components/ticketBooking/components/addServiceVariant/addService.js +172 -91
- package/es/components/ticketBooking/components/timeBar/index.js +3 -3
- package/es/components/ticketBooking/utils/index.d.ts +3 -1
- package/es/components/ticketBooking/utils/index.js +18 -2
- package/es/hooks/useWindowSize.js +8 -1
- package/es/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
- package/es/plus/productSelect/CategoryTabs/CategorySkeleton.js +29 -0
- package/es/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
- package/es/plus/productSelect/CategoryTabs/index.d.ts +18 -0
- package/es/plus/productSelect/CategoryTabs/index.js +171 -0
- package/es/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
- package/es/plus/productSelect/ProductCard/ProductCardSkeleton.js +37 -0
- package/es/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
- package/es/plus/productSelect/ProductCard/index.d.ts +45 -0
- package/es/plus/productSelect/ProductCard/index.js +170 -0
- package/es/plus/productSelect/ProductCard/index.less +270 -0
- package/es/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
- package/es/plus/productSelect/ProductList/gridComponents.js +149 -0
- package/es/plus/productSelect/ProductList/index.d.ts +22 -0
- package/es/plus/productSelect/ProductList/index.js +72 -0
- package/es/plus/productSelect/ProductList/index.less +0 -0
- package/es/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
- package/es/plus/productSelect/components/IntersectionObserver.js +276 -0
- package/es/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
- package/es/plus/productSelect/components/TabsStructure/TabsStructure.js +357 -0
- package/es/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
- package/es/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
- package/es/plus/productSelect/components/TabsStructure/hooks.js +243 -0
- package/es/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
- package/es/plus/productSelect/components/TabsStructure/index.js +13 -0
- package/es/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
- package/es/plus/productSelect/components/TabsStructure/styles.js +87 -0
- package/es/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
- package/es/plus/productSelect/components/TabsStructure/types.js +1 -0
- package/es/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
- package/es/plus/productSelect/components/TabsStructure/utils.js +56 -0
- package/es/plus/productSelect/components/pisellPriceText/index.d.ts +11 -0
- package/es/plus/productSelect/components/pisellPriceText/index.js +43 -0
- package/es/plus/productSelect/hooks/useToken.d.ts +18 -0
- package/es/plus/productSelect/hooks/useToken.js +34 -0
- package/es/plus/productSelect/index.d.ts +31 -0
- package/es/plus/productSelect/index.js +270 -0
- package/es/plus/productSelect/index.less +56 -0
- package/es/plus/productSelect/locales.d.ts +18 -0
- package/es/plus/productSelect/locales.js +17 -0
- package/es/plus/productSelect/theme/token.d.ts +17 -0
- package/es/plus/productSelect/theme/token.js +19 -0
- package/es/plus/productSelect/utils.d.ts +39 -0
- package/es/plus/productSelect/utils.js +162 -0
- package/es/pro/pisellNumberSelector/index.js +3 -3
- package/es/pro/pisellPhoneKeyboard/index.js +1 -1
- package/es/utils/index.d.ts +1 -1
- package/lib/components/appointmentBooking/components/Content/index.js +1 -1
- package/lib/components/appointmentBooking/components/Content/index.less +3 -3
- package/lib/components/appointmentBooking/components/Services/index.js +2 -2
- package/lib/components/appointmentBooking/index.js +6 -1
- package/lib/components/booking/components/voucher/index.js +5 -0
- package/lib/components/booking/deposit/ClientItem/index.js +1 -1
- package/lib/components/booking/deposit/DepositItem/index.js +1 -1
- package/lib/components/booking/forms/single/RenderValueById.d.ts +1 -0
- package/lib/components/booking/forms/single/RenderValueById.js +37 -9
- package/lib/components/booking/forms/single/index.less +67 -1
- package/lib/components/booking/hooks/useQuotation.js +1 -1
- package/lib/components/booking/info/clientVariant/utils.d.ts +2 -0
- package/lib/components/booking/info/clientVariant/utils.js +13 -2
- package/lib/components/booking/info/clientVariant/vertical/index.js +7 -6
- package/lib/components/booking/info2/service/addService/utils.js +3 -3
- package/lib/components/booking/info2/service/addTimeModal/index.js +0 -1
- package/lib/components/booking/info2/service/editService/index.js +22 -12
- package/lib/components/booking/info2/utilsByBooking.js +7 -8
- package/lib/components/booking/locales.d.ts +3 -0
- package/lib/components/booking/locales.js +6 -3
- package/lib/components/booking/materiels/duration/index.js +1 -1
- package/lib/components/booking/materiels/startTime/index.d.ts +1 -0
- package/lib/components/booking/materiels/startTime/index.js +1 -1
- package/lib/components/booking/utils.js +3 -3
- package/lib/components/eftposPay/amount.d.ts +1 -1
- package/lib/components/eftposPay/device.d.ts +1 -1
- package/lib/components/eftposPay/store/index.d.ts +3 -3
- package/lib/components/eventBooking/index.js +6 -1
- package/lib/components/productSelect/components/TabProduct/index.js +7 -1
- package/lib/components/schedules/utils.d.ts +1 -1
- package/lib/components/shoppingCart/components/Cart/Product.js +7 -4
- package/lib/components/ticketBooking/components/addServiceVariant/addService.js +87 -14
- package/lib/components/ticketBooking/components/timeBar/index.js +89 -70
- package/lib/components/ticketBooking/utils/index.d.ts +3 -1
- package/lib/components/ticketBooking/utils/index.js +21 -0
- package/lib/hooks/useWindowSize.js +6 -1
- package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.d.ts +10 -0
- package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.js +62 -0
- package/lib/plus/productSelect/CategoryTabs/CategorySkeleton.less +30 -0
- package/lib/plus/productSelect/CategoryTabs/index.d.ts +18 -0
- package/lib/plus/productSelect/CategoryTabs/index.js +183 -0
- package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.d.ts +10 -0
- package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.js +58 -0
- package/lib/plus/productSelect/ProductCard/ProductCardSkeleton.less +81 -0
- package/lib/plus/productSelect/ProductCard/index.d.ts +45 -0
- package/lib/plus/productSelect/ProductCard/index.js +184 -0
- package/lib/plus/productSelect/ProductCard/index.less +270 -0
- package/lib/plus/productSelect/ProductList/gridComponents.d.ts +44 -0
- package/lib/plus/productSelect/ProductList/gridComponents.js +148 -0
- package/lib/plus/productSelect/ProductList/index.d.ts +22 -0
- package/lib/plus/productSelect/ProductList/index.js +86 -0
- package/lib/plus/productSelect/ProductList/index.less +0 -0
- package/lib/plus/productSelect/components/IntersectionObserver.d.ts +42 -0
- package/lib/plus/productSelect/components/IntersectionObserver.js +269 -0
- package/lib/plus/productSelect/components/TabsStructure/TabsStructure.d.ts +30 -0
- package/lib/plus/productSelect/components/TabsStructure/TabsStructure.js +393 -0
- package/lib/plus/productSelect/components/TabsStructure/TabsStructure.less +224 -0
- package/lib/plus/productSelect/components/TabsStructure/hooks.d.ts +22 -0
- package/lib/plus/productSelect/components/TabsStructure/hooks.js +209 -0
- package/lib/plus/productSelect/components/TabsStructure/index.d.ts +5 -0
- package/lib/plus/productSelect/components/TabsStructure/index.js +92 -0
- package/lib/plus/productSelect/components/TabsStructure/styles.d.ts +47 -0
- package/lib/plus/productSelect/components/TabsStructure/styles.js +122 -0
- package/lib/plus/productSelect/components/TabsStructure/types.d.ts +105 -0
- package/lib/plus/productSelect/components/TabsStructure/types.js +17 -0
- package/lib/plus/productSelect/components/TabsStructure/utils.d.ts +12 -0
- package/lib/plus/productSelect/components/TabsStructure/utils.js +72 -0
- package/lib/plus/productSelect/components/pisellPriceText/index.d.ts +11 -0
- package/lib/plus/productSelect/components/pisellPriceText/index.js +72 -0
- package/lib/plus/productSelect/hooks/useToken.d.ts +18 -0
- package/lib/plus/productSelect/hooks/useToken.js +50 -0
- package/lib/plus/productSelect/index.d.ts +31 -0
- package/lib/plus/productSelect/index.js +299 -0
- package/lib/plus/productSelect/index.less +56 -0
- package/lib/plus/productSelect/locales.d.ts +18 -0
- package/lib/plus/productSelect/locales.js +41 -0
- package/lib/plus/productSelect/theme/token.d.ts +17 -0
- package/lib/plus/productSelect/theme/token.js +47 -0
- package/lib/plus/productSelect/utils.d.ts +39 -0
- package/lib/plus/productSelect/utils.js +138 -0
- package/lib/pro/pisellNumberSelector/index.js +3 -3
- package/lib/pro/pisellPhoneKeyboard/index.js +1 -1
- package/lib/utils/index.d.ts +1 -1
- package/package.json +4 -4
@@ -0,0 +1,17 @@
|
|
1
|
+
export default {
|
2
|
+
en: {
|
3
|
+
'pisell2.product-select.search': 'Search',
|
4
|
+
'pisell2.product-select.stock': 'Stock',
|
5
|
+
'pisell2.product-select.empty': 'No Data'
|
6
|
+
},
|
7
|
+
'zh-CN': {
|
8
|
+
'pisell2.product-select.search': '搜索',
|
9
|
+
'pisell2.product-select.stock': '库存',
|
10
|
+
'pisell2.product-select.empty': '暂无数据'
|
11
|
+
},
|
12
|
+
'zh-HK': {
|
13
|
+
'pisell2.product-select.search': '搜索',
|
14
|
+
'pisell2.product-select.stock': '庫存',
|
15
|
+
'pisell2.product-select.empty': '暂无数据'
|
16
|
+
}
|
17
|
+
};
|
@@ -0,0 +1,17 @@
|
|
1
|
+
export interface ProductSelectToken {
|
2
|
+
colorPrimary: string;
|
3
|
+
colorText: string;
|
4
|
+
colorTextSecondary: string;
|
5
|
+
searchInputColor: string;
|
6
|
+
containerBg: string;
|
7
|
+
tabItemBg: string;
|
8
|
+
tabItemHoverBg: string;
|
9
|
+
tabItemActiveBg: string;
|
10
|
+
categoryTextColor: string;
|
11
|
+
cardBg: string;
|
12
|
+
cardHoverBg: string;
|
13
|
+
cardSelectedBg: string;
|
14
|
+
cardSelectedTextColor: string;
|
15
|
+
cardSelectedSecondaryTextColor: string;
|
16
|
+
}
|
17
|
+
export declare const defaultToken: ProductSelectToken;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
export var defaultToken = {
|
2
|
+
colorPrimary: '#8157D5',
|
3
|
+
colorText: '#1B1B1B',
|
4
|
+
colorTextSecondary: '#4E4E4E',
|
5
|
+
containerBg: '#4E4E4E',
|
6
|
+
// search
|
7
|
+
searchInputColor: '#98a2b3',
|
8
|
+
// tab
|
9
|
+
tabItemBg: '#FFFFFF',
|
10
|
+
tabItemHoverBg: '#FFFFFF',
|
11
|
+
tabItemActiveBg: '#8157D5',
|
12
|
+
// category
|
13
|
+
categoryTextColor: '#FFFFFF',
|
14
|
+
cardBg: '#FFFFFF',
|
15
|
+
cardHoverBg: '#eaecf0',
|
16
|
+
cardSelectedBg: '#8157D5',
|
17
|
+
cardSelectedTextColor: '#ffffff',
|
18
|
+
cardSelectedSecondaryTextColor: 'rgba(255, 255, 255, 0.7)'
|
19
|
+
};
|
@@ -0,0 +1,39 @@
|
|
1
|
+
interface Product {
|
2
|
+
id: number;
|
3
|
+
title: string;
|
4
|
+
sort?: number;
|
5
|
+
category: Array<{
|
6
|
+
id: number;
|
7
|
+
name: string;
|
8
|
+
icon?: string;
|
9
|
+
slug: string;
|
10
|
+
sort: number;
|
11
|
+
}>;
|
12
|
+
[key: string]: any;
|
13
|
+
}
|
14
|
+
interface CategoryItem {
|
15
|
+
__typename: 'category';
|
16
|
+
id: number;
|
17
|
+
name: string;
|
18
|
+
icon?: string;
|
19
|
+
slug: string;
|
20
|
+
sort: number;
|
21
|
+
}
|
22
|
+
interface ProductItem extends Product {
|
23
|
+
__typename?: 'product';
|
24
|
+
}
|
25
|
+
declare type ListItem = CategoryItem | ProductItem;
|
26
|
+
/**
|
27
|
+
* 按目录对商品进行分组,产出平级的数据结构用于虚拟列表渲染
|
28
|
+
* @param products 商品列表
|
29
|
+
* @returns 包含目录项和商品项的平级数组
|
30
|
+
*/
|
31
|
+
export declare function groupProductsByCategory(products: Product[]): ListItem[];
|
32
|
+
/**
|
33
|
+
* 根据传入的元素标识符获取DOM元素
|
34
|
+
* @param elementIdentifier 元素标识符,可以是HTMLElement、带'#'的id、带'.'的类名或CSS选择器
|
35
|
+
* @returns 找到的DOM元素或null
|
36
|
+
*/
|
37
|
+
export declare function getElementByIdentifier(elementIdentifier: HTMLElement | string | null | undefined): HTMLElement | null;
|
38
|
+
export declare const getOffsetTopRelativeToScrollContainer: (targetElement: HTMLElement, scrollContainer: HTMLElement) => number;
|
39
|
+
export {};
|
@@ -0,0 +1,162 @@
|
|
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; }
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
10
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
12
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
13
|
+
// 商品按目录分组的工具函数
|
14
|
+
import { locales } from '@pisell/utils';
|
15
|
+
/**
|
16
|
+
* 按目录对商品进行分组,产出平级的数据结构用于虚拟列表渲染
|
17
|
+
* @param products 商品列表
|
18
|
+
* @returns 包含目录项和商品项的平级数组
|
19
|
+
*/
|
20
|
+
export function groupProductsByCategory(products) {
|
21
|
+
if (!products || products.length === 0) {
|
22
|
+
return [];
|
23
|
+
}
|
24
|
+
|
25
|
+
// 收集所有的目录信息
|
26
|
+
var categoryMap = new Map();
|
27
|
+
var categoryProductsMap = new Map();
|
28
|
+
var uncategorizedProducts = [];
|
29
|
+
|
30
|
+
// 遍历商品,收集目录信息和建立目录-商品映射
|
31
|
+
products.forEach(function (product) {
|
32
|
+
if (product.category && Array.isArray(product.category) && product.category.length > 0) {
|
33
|
+
product.category.forEach(function (cat) {
|
34
|
+
// 收集目录信息
|
35
|
+
if (!categoryMap.has(cat.id)) {
|
36
|
+
categoryMap.set(cat.id, {
|
37
|
+
__typename: 'category',
|
38
|
+
id: cat.id,
|
39
|
+
name: cat.name,
|
40
|
+
icon: cat.icon,
|
41
|
+
slug: cat.slug,
|
42
|
+
sort: cat.sort
|
43
|
+
});
|
44
|
+
}
|
45
|
+
|
46
|
+
// 建立目录-商品映射
|
47
|
+
if (!categoryProductsMap.has(cat.id)) {
|
48
|
+
categoryProductsMap.set(cat.id, []);
|
49
|
+
}
|
50
|
+
categoryProductsMap.get(cat.id).push(_objectSpread(_objectSpread({}, product), {}, {
|
51
|
+
__typename: 'product',
|
52
|
+
__categoryId: cat.id
|
53
|
+
}));
|
54
|
+
});
|
55
|
+
} else {
|
56
|
+
// 没有分组的商品放入未分类列表
|
57
|
+
uncategorizedProducts.push(_objectSpread(_objectSpread({}, product), {}, {
|
58
|
+
__typename: 'product',
|
59
|
+
__categoryId: 0
|
60
|
+
}));
|
61
|
+
}
|
62
|
+
});
|
63
|
+
|
64
|
+
// 按目录的sort字段排序
|
65
|
+
var sortedCategories = Array.from(categoryMap.values()).sort(function (a, b) {
|
66
|
+
return b.sort - a.sort;
|
67
|
+
});
|
68
|
+
|
69
|
+
// 构建最终的平级数组
|
70
|
+
var result = [];
|
71
|
+
sortedCategories.forEach(function (category) {
|
72
|
+
// 添加目录项
|
73
|
+
result.push(category);
|
74
|
+
|
75
|
+
// 添加该目录下的商品,按商品的sort字段排序
|
76
|
+
var categoryProducts = categoryProductsMap.get(category.id) || [];
|
77
|
+
var sortedProducts = categoryProducts.sort(function (a, b) {
|
78
|
+
var sortA = a.sort || 0;
|
79
|
+
var sortB = b.sort || 0;
|
80
|
+
return sortB - sortA;
|
81
|
+
});
|
82
|
+
result.push.apply(result, _toConsumableArray(sortedProducts));
|
83
|
+
});
|
84
|
+
|
85
|
+
// 如果有未分类的商品,添加other分组
|
86
|
+
if (uncategorizedProducts.length > 0) {
|
87
|
+
var otherCategory = {
|
88
|
+
__typename: 'category',
|
89
|
+
id: 0,
|
90
|
+
name: locales.getText('pisell2.text.other'),
|
91
|
+
icon: '',
|
92
|
+
slug: 'other',
|
93
|
+
sort: 99999999 // 确保other分组排在最后
|
94
|
+
};
|
95
|
+
result.push(otherCategory);
|
96
|
+
// 对未分类商品也进行排序
|
97
|
+
var sortedUncategorizedProducts = uncategorizedProducts.sort(function (a, b) {
|
98
|
+
var sortA = a.sort || 0;
|
99
|
+
var sortB = b.sort || 0;
|
100
|
+
return sortB - sortA;
|
101
|
+
});
|
102
|
+
result.push.apply(result, _toConsumableArray(sortedUncategorizedProducts));
|
103
|
+
}
|
104
|
+
console.log('xxxxxx', result);
|
105
|
+
return result;
|
106
|
+
}
|
107
|
+
|
108
|
+
/**
|
109
|
+
* 根据传入的元素标识符获取DOM元素
|
110
|
+
* @param elementIdentifier 元素标识符,可以是HTMLElement、带'#'的id、带'.'的类名或CSS选择器
|
111
|
+
* @returns 找到的DOM元素或null
|
112
|
+
*/
|
113
|
+
export function getElementByIdentifier(elementIdentifier) {
|
114
|
+
// 如果没有提供标识符,返回null
|
115
|
+
if (!elementIdentifier) {
|
116
|
+
return null;
|
117
|
+
}
|
118
|
+
|
119
|
+
// 如果是HTMLElement,直接返回
|
120
|
+
if (elementIdentifier instanceof HTMLElement) {
|
121
|
+
return elementIdentifier;
|
122
|
+
}
|
123
|
+
|
124
|
+
// 如果是字符串,判断是id、类名还是选择器
|
125
|
+
if (typeof elementIdentifier === 'string') {
|
126
|
+
// 如果以#开头,按id查找
|
127
|
+
if (elementIdentifier.startsWith('#')) {
|
128
|
+
return document.getElementById(elementIdentifier.slice(1));
|
129
|
+
}
|
130
|
+
// 如果以.开头,按类名查找
|
131
|
+
if (elementIdentifier.startsWith('.')) {
|
132
|
+
return document.querySelector(elementIdentifier);
|
133
|
+
}
|
134
|
+
// 否则直接作为选择器查找
|
135
|
+
return document.querySelector(elementIdentifier);
|
136
|
+
}
|
137
|
+
return null;
|
138
|
+
}
|
139
|
+
|
140
|
+
// 获取元素相对于指定滚动容器的偏移量
|
141
|
+
export var getOffsetTopRelativeToScrollContainer = function getOffsetTopRelativeToScrollContainer(targetElement, scrollContainer) {
|
142
|
+
if (!targetElement || !scrollContainer) return 0;
|
143
|
+
|
144
|
+
// 如果目标元素就是滚动容器本身,返回0
|
145
|
+
if (targetElement === scrollContainer) {
|
146
|
+
return 0;
|
147
|
+
}
|
148
|
+
var bodyTransform = getComputedStyle(document.body).transform;
|
149
|
+
var scaleY = 1;
|
150
|
+
if (bodyTransform !== 'none') {
|
151
|
+
var matrix = new DOMMatrix(bodyTransform);
|
152
|
+
scaleY = matrix.d;
|
153
|
+
}
|
154
|
+
// 使用getBoundingClientRect计算相对偏移量
|
155
|
+
var targetRect = targetElement.getBoundingClientRect();
|
156
|
+
var containerRect = scrollContainer.getBoundingClientRect();
|
157
|
+
|
158
|
+
// targetRect.top - containerRect.top 得到目标元素相对于容器顶部的可视距离
|
159
|
+
// 考虑容器已经滚动的距离 再加上scrollContainer.scrollTop
|
160
|
+
// 这样得到的是目标元素在容器内容中的绝对位置
|
161
|
+
return targetRect.top / scaleY - containerRect.top / scaleY + scrollContainer.scrollTop;
|
162
|
+
};
|
@@ -10,9 +10,9 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
10
10
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
11
11
|
import React, { useMemo, useState } from 'react';
|
12
12
|
import { Popover } from 'antd';
|
13
|
-
import Delete from '@pisell/icon/
|
14
|
-
import Plus from '@pisell/icon/
|
15
|
-
import Minus from '@pisell/icon/
|
13
|
+
import Delete from '@pisell/icon/es/Delete';
|
14
|
+
import Plus from '@pisell/icon/es/Plus';
|
15
|
+
import Minus from '@pisell/icon/es/Minus';
|
16
16
|
// import { VirtualKeyboard } from '@pisell/materials';
|
17
17
|
import NumberKeyBoard from "../numberKeyboard";
|
18
18
|
import classNames from 'classnames';
|
@@ -15,7 +15,7 @@ import React, { useState, useMemo, useEffect } from 'react';
|
|
15
15
|
import { VirtualKeyboard } from '@pisell/materials';
|
16
16
|
import { Popover, Input } from 'antd';
|
17
17
|
import "./index.less";
|
18
|
-
import Delete from '@pisell/icon/
|
18
|
+
import Delete from '@pisell/icon/es/Delete';
|
19
19
|
import { locales } from '@pisell/utils';
|
20
20
|
import localeTexts from "./locales";
|
21
21
|
import { getLocale } from "../../utils/locales";
|
package/es/utils/index.d.ts
CHANGED
@@ -18,6 +18,6 @@ declare let modal: Omit<ModalStaticFunctions, 'warn'>;
|
|
18
18
|
export declare const setModal: (m: Omit<ModalStaticFunctions, 'warn'>) => void;
|
19
19
|
export declare const saveConfirm: () => Promise<{
|
20
20
|
destroy: () => void;
|
21
|
-
update: (configUpdate: import("antd
|
21
|
+
update: (configUpdate: import("antd").ModalFuncProps | ((prevConfig: import("antd").ModalFuncProps) => import("antd").ModalFuncProps)) => void;
|
22
22
|
}>;
|
23
23
|
export { modal };
|
@@ -199,7 +199,7 @@ var Layout = () => {
|
|
199
199
|
var _a2, _b2;
|
200
200
|
if ((0, import_utils.isMobile)()) {
|
201
201
|
const header = document.querySelector(".event-progress-bar");
|
202
|
-
const footer = document.querySelector(".pisell-section-footers-wrapper");
|
202
|
+
const footer = document.querySelector(".pisell-section-footers-wrapper") || document.querySelector("#layout-footer");
|
203
203
|
const content = document.querySelector(
|
204
204
|
".parallel-content-mobile-wrap"
|
205
205
|
);
|
@@ -7,7 +7,7 @@
|
|
7
7
|
flex: 1;
|
8
8
|
|
9
9
|
.pisell-product-select-wrapper {
|
10
|
-
.pisell-product-
|
10
|
+
.pisell-product-select__tabs-wrapper {
|
11
11
|
top: 77px !important;
|
12
12
|
}
|
13
13
|
}
|
@@ -50,7 +50,7 @@
|
|
50
50
|
flex: none;
|
51
51
|
|
52
52
|
.pisell-product-select-wrapper {
|
53
|
-
.pisell-product-
|
53
|
+
.pisell-product-select__tabs-wrapper {
|
54
54
|
top: 0 !important;
|
55
55
|
}
|
56
56
|
}
|
@@ -97,7 +97,7 @@
|
|
97
97
|
|
98
98
|
.parallel-content-retail-wrap {
|
99
99
|
.pisell-product-select-wrapper {
|
100
|
-
.pisell-product-
|
100
|
+
.pisell-product-select__tabs-wrapper {
|
101
101
|
top: 0px !important;
|
102
102
|
}
|
103
103
|
}
|
@@ -35,7 +35,7 @@ module.exports = __toCommonJS(Services_exports);
|
|
35
35
|
var import_react = __toESM(require("react"));
|
36
36
|
var import_dayjs = __toESM(require("dayjs"));
|
37
37
|
var import_utils = require("@pisell/utils");
|
38
|
-
var import_productSelect = __toESM(require("
|
38
|
+
var import_productSelect = __toESM(require("../../../../plus/productSelect"));
|
39
39
|
var import_useEngineContext = __toESM(require("../../../../hooks/useEngineContext"));
|
40
40
|
var import_context = require("../../context");
|
41
41
|
var import_hooks = require("../../hooks");
|
@@ -169,7 +169,7 @@ var Services = (0, import_react.forwardRef)((props, ref) => {
|
|
169
169
|
const _isMobile = (0, import_react.useMemo)(() => {
|
170
170
|
if (typeof import_utils.isMobile === "function") return (0, import_utils.isMobile)();
|
171
171
|
return import_utils.isMobile;
|
172
|
-
}, import_utils.isMobile);
|
172
|
+
}, [import_utils.isMobile]);
|
173
173
|
return /* @__PURE__ */ import_react.default.createElement("div", { className: "appointment-service-wrap" }, /* @__PURE__ */ import_react.default.createElement(
|
174
174
|
import_productSelect.default,
|
175
175
|
{
|
@@ -60,7 +60,12 @@ var AppointmentBooking = () => {
|
|
60
60
|
}, []);
|
61
61
|
(0, import_react.useEffect)(() => {
|
62
62
|
const setRealVH = () => {
|
63
|
-
|
63
|
+
let height = window.innerHeight;
|
64
|
+
const urlParams = new URLSearchParams(window.location.search);
|
65
|
+
if (urlParams.has("fromTabbar")) {
|
66
|
+
height = height - 54;
|
67
|
+
}
|
68
|
+
const vh = height * 0.01;
|
64
69
|
document.documentElement.style.setProperty("--vh", `${vh}px`);
|
65
70
|
};
|
66
71
|
setRealVH();
|
@@ -44,6 +44,7 @@ var import_index = require("./index.less");
|
|
44
44
|
var import_ahooks = require("ahooks");
|
45
45
|
var import_utils2 = require("./utils");
|
46
46
|
var import_pisellos = require("../../../ticketBooking/hooks/pisellos");
|
47
|
+
var import_utils3 = require("../../info/clientVariant/utils");
|
47
48
|
var ShopDiscountHooks = {
|
48
49
|
onInited: "shopDiscount:onInited",
|
49
50
|
onDestroy: "shopDiscount:onDestroy",
|
@@ -174,6 +175,10 @@ var VoucherCard = (props) => {
|
|
174
175
|
(0, import_react.useEffect)(() => {
|
175
176
|
if (!isBooking4Shop) return;
|
176
177
|
const onScanCustomerChange = (customer) => {
|
178
|
+
const clientVariantClose = (0, import_utils3.getClientVariantClose)();
|
179
|
+
if (clientVariantClose) {
|
180
|
+
clientVariantClose();
|
181
|
+
}
|
177
182
|
selectCustomer(customer);
|
178
183
|
};
|
179
184
|
const onDiscountListChange = (discount) => {
|
@@ -36,7 +36,7 @@ var import_react = __toESM(require("react"));
|
|
36
36
|
var import_antd = require("antd");
|
37
37
|
var import_utils = require("@pisell/utils");
|
38
38
|
var import_classnames = __toESM(require("classnames"));
|
39
|
-
var import_User01 = __toESM(require("@pisell/icon/
|
39
|
+
var import_User01 = __toESM(require("@pisell/icon/es/User01"));
|
40
40
|
var import_utils2 = require("../../utils");
|
41
41
|
var import_index = require("./index.less");
|
42
42
|
var ClientItem = (props) => {
|
@@ -37,7 +37,7 @@ var import_antd = require("antd");
|
|
37
37
|
var import_icons = require("@ant-design/icons");
|
38
38
|
var import_utils = require("@pisell/utils");
|
39
39
|
var import_ClientItem = __toESM(require("../ClientItem"));
|
40
|
-
var import_Edit05 = __toESM(require("@pisell/icon/
|
40
|
+
var import_Edit05 = __toESM(require("@pisell/icon/es/Edit05"));
|
41
41
|
var import_index = require("./index.less");
|
42
42
|
var statusTagColor = {
|
43
43
|
unpaid: "#B2DDFF",
|
@@ -34,17 +34,20 @@ __export(RenderValueById_exports, {
|
|
34
34
|
module.exports = __toCommonJS(RenderValueById_exports);
|
35
35
|
var import_react = __toESM(require("react"));
|
36
36
|
var import_utils = require("@pisell/utils");
|
37
|
+
var import_materials = require("@pisell/materials");
|
37
38
|
var import_antd = require("antd");
|
38
39
|
var import_ahooks = require("ahooks");
|
39
40
|
var import_useEngineContext = __toESM(require("../../../../hooks/useEngineContext"));
|
40
41
|
var import_serve = require("../serve");
|
42
|
+
var import_index = require("./index.less");
|
41
43
|
var RenderValueById = (props) => {
|
42
|
-
var _a, _b, _c, _d, _e, _f;
|
44
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
43
45
|
const { field, value: propsValue } = props;
|
44
46
|
const { appHelper } = (0, import_useEngineContext.default)();
|
47
|
+
const [displayCount, setDisplayCount] = (0, import_react.useState)(10);
|
45
48
|
const _getFormData = (0, import_ahooks.useRequest)(import_serve.getFormData, {
|
46
49
|
manual: true,
|
47
|
-
cacheKey: `formOption-${(_a = field.setting) == null ? void 0 : _a.linkedTable}`,
|
50
|
+
cacheKey: `formOption-${(_a = field.setting) == null ? void 0 : _a.linkedTable}-${(_c = (_b = propsValue || []) == null ? void 0 : _b.toString) == null ? void 0 : _c.call(_b)}`,
|
48
51
|
staleTime: 500,
|
49
52
|
cacheTime: 5e3
|
50
53
|
});
|
@@ -81,24 +84,49 @@ var RenderValueById = (props) => {
|
|
81
84
|
}))) || [];
|
82
85
|
}
|
83
86
|
return (_e2 = field == null ? void 0 : field.setting) == null ? void 0 : _e2.customTypeList;
|
84
|
-
}, [field.filed_type, (
|
87
|
+
}, [field.filed_type, (_d = field == null ? void 0 : field.setting) == null ? void 0 : _d.customTypeList, _getFormData.data]);
|
85
88
|
if ((0, import_utils.isArr)(value)) {
|
89
|
+
const formListDisplay = ((_e = field == null ? void 0 : field.setting) == null ? void 0 : _e.displayStyle) === "list" && (field == null ? void 0 : field.filed_type) === "form_to_form";
|
86
90
|
let _list = options == null ? void 0 : options.filter((i) => {
|
87
91
|
return value == null ? void 0 : value.includes((i == null ? void 0 : i.id) || i.value);
|
88
92
|
});
|
89
|
-
let _str = (_list == null ? void 0 : _list.map((i) => {
|
93
|
+
let _str = !formListDisplay && (_list == null ? void 0 : _list.map((i) => {
|
90
94
|
var _a2;
|
91
|
-
|
95
|
+
const title = (_a2 = appHelper == null ? void 0 : appHelper.utils) == null ? void 0 : _a2.translationShop((i == null ? void 0 : i.title) || (i == null ? void 0 : i.label));
|
96
|
+
return /* @__PURE__ */ import_react.default.createElement(import_antd.Tooltip, { title }, /* @__PURE__ */ import_react.default.createElement(import_antd.Tag, { className: "pisell-lowcode__booking-form-link-tag-title" }, title));
|
92
97
|
})) || "-";
|
93
|
-
|
98
|
+
if (formListDisplay) {
|
99
|
+
const displayList = (_list == null ? void 0 : _list.slice(0, displayCount)) || [];
|
100
|
+
_str = (displayList == null ? void 0 : displayList.map((i, index) => {
|
101
|
+
var _a2;
|
102
|
+
const title = (_a2 = appHelper == null ? void 0 : appHelper.utils) == null ? void 0 : _a2.translationShop((i == null ? void 0 : i.title) || (i == null ? void 0 : i.label));
|
103
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-lowcode__booking-form-link-to-list-item" }, /* @__PURE__ */ import_react.default.createElement("span", { className: "pisell-lowcode__booking-form-link-to-list-item-index" }, index + 1), /* @__PURE__ */ import_react.default.createElement(import_antd.Tooltip, { title }, /* @__PURE__ */ import_react.default.createElement("span", { className: "pisell-lowcode__booking-form-link-to-list-item-title" }, title)));
|
104
|
+
})) || "-";
|
105
|
+
}
|
106
|
+
return /* @__PURE__ */ import_react.default.createElement(
|
107
|
+
"span",
|
108
|
+
{
|
109
|
+
className: formListDisplay ? "pisell-lowcode__booking-form-link-to-list-wrap" : ""
|
110
|
+
},
|
111
|
+
_str || "-",
|
112
|
+
formListDisplay && (_list == null ? void 0 : _list.length) > displayCount && /* @__PURE__ */ import_react.default.createElement(
|
113
|
+
"div",
|
114
|
+
{
|
115
|
+
className: "pisell-lowcode__booking-form-link-to-list-item-more",
|
116
|
+
onClick: () => setDisplayCount((prev) => Math.min(prev + 10, (_list == null ? void 0 : _list.length) || 0))
|
117
|
+
},
|
118
|
+
/* @__PURE__ */ import_react.default.createElement("span", null, import_utils.locales.getText("pisell2.text.form.link.to.another.record.more")),
|
119
|
+
/* @__PURE__ */ import_react.default.createElement(import_materials.Iconfont, { type: "icona-IconStroke" })
|
120
|
+
)
|
121
|
+
);
|
94
122
|
}
|
95
123
|
if (!(0, import_utils.isUndefined)(value)) {
|
96
|
-
if ((field == null ? void 0 : field.filed_type) === "select" && !((
|
124
|
+
if ((field == null ? void 0 : field.filed_type) === "select" && !((_f = field == null ? void 0 : field.setting) == null ? void 0 : _f.version)) {
|
97
125
|
return /* @__PURE__ */ import_react.default.createElement("span", null, value || "-");
|
98
126
|
}
|
99
127
|
let _item = options == null ? void 0 : options.filter((i) => (i == null ? void 0 : i.id) == value);
|
100
|
-
return ((
|
101
|
-
((
|
128
|
+
return ((_i = appHelper == null ? void 0 : appHelper.utils) == null ? void 0 : _i.translationShop(
|
129
|
+
((_g = _item == null ? void 0 : _item[0]) == null ? void 0 : _g.title) || ((_h = _item == null ? void 0 : _item[0]) == null ? void 0 : _h.label)
|
102
130
|
)) || "-";
|
103
131
|
}
|
104
132
|
return null;
|
@@ -1,3 +1,69 @@
|
|
1
1
|
.attachment-item {
|
2
2
|
width: 100%;
|
3
|
-
}
|
3
|
+
}
|
4
|
+
|
5
|
+
.pisell-lowcode__booking-form-link-tag-title {
|
6
|
+
overflow: hidden;
|
7
|
+
text-overflow: ellipsis;
|
8
|
+
white-space: nowrap;
|
9
|
+
display: inline-block;
|
10
|
+
max-width: 100%;
|
11
|
+
}
|
12
|
+
|
13
|
+
.pisell-lowcode__booking-form-link-to-list-wrap {
|
14
|
+
display: flex;
|
15
|
+
flex-direction: column;
|
16
|
+
gap: 12px;
|
17
|
+
|
18
|
+
|
19
|
+
.pisell-lowcode__booking-form-link-to-list-item-more {
|
20
|
+
padding: 4px 6px;
|
21
|
+
color: #705dff;
|
22
|
+
font-size: 14px;
|
23
|
+
cursor: pointer;
|
24
|
+
background-color: #f9fafb;
|
25
|
+
border-radius: 8px;
|
26
|
+
border: 1px solid #eaecf0;
|
27
|
+
display: flex;
|
28
|
+
justify-content: center;
|
29
|
+
align-items: center;
|
30
|
+
gap: 4px;
|
31
|
+
}
|
32
|
+
|
33
|
+
.pisell-lowcode__booking-form-link-to-list-item {
|
34
|
+
display: flex;
|
35
|
+
align-items: center;
|
36
|
+
gap: 8px;
|
37
|
+
background-color: #f9fafb;
|
38
|
+
padding: 12px 14px;
|
39
|
+
border-radius: 8px;
|
40
|
+
border: 1px solid #eaecf0;
|
41
|
+
color: #101828;
|
42
|
+
font-size: 16px;
|
43
|
+
font-weight: 500;
|
44
|
+
white-space: normal;
|
45
|
+
|
46
|
+
.pisell-lowcode__booking-form-link-to-list-item-index {
|
47
|
+
padding: 0 5px;
|
48
|
+
min-width: 20px;
|
49
|
+
min-height: 20px;
|
50
|
+
line-height: 20px;
|
51
|
+
border-radius: 20px;
|
52
|
+
font-size: 14px;
|
53
|
+
font-weight: 600;
|
54
|
+
background-color: #705dff;
|
55
|
+
display: flex;
|
56
|
+
align-items: center;
|
57
|
+
justify-content: center;
|
58
|
+
color: #fff;
|
59
|
+
}
|
60
|
+
|
61
|
+
.pisell-lowcode__booking-form-link-to-list-item-title {
|
62
|
+
flex: 1;
|
63
|
+
overflow: hidden;
|
64
|
+
text-overflow: ellipsis;
|
65
|
+
white-space: nowrap;
|
66
|
+
display: block;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
@@ -35,7 +35,7 @@ __export(useQuotation_exports, {
|
|
35
35
|
module.exports = __toCommonJS(useQuotation_exports);
|
36
36
|
var import_react = __toESM(require("react"));
|
37
37
|
var import_utils = require("../utils");
|
38
|
-
var import_useEngineContext = __toESM(require("
|
38
|
+
var import_useEngineContext = __toESM(require("../../../hooks/useEngineContext"));
|
39
39
|
var import_utils2 = require("@pisell/utils");
|
40
40
|
var import_materials = require("@pisell/materials");
|
41
41
|
var import_serve = require("../info/service/serve");
|
@@ -19,7 +19,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
19
19
|
// src/components/booking/info/clientVariant/utils.ts
|
20
20
|
var utils_exports = {};
|
21
21
|
__export(utils_exports, {
|
22
|
-
|
22
|
+
getClientVariantClose: () => getClientVariantClose,
|
23
|
+
getWaiverTitle: () => getWaiverTitle,
|
24
|
+
setClientVariantClose: () => setClientVariantClose
|
23
25
|
});
|
24
26
|
module.exports = __toCommonJS(utils_exports);
|
25
27
|
var import_utils = require("@pisell/utils");
|
@@ -28,7 +30,16 @@ var getWaiverTitle = (waiverForm) => {
|
|
28
30
|
return `${item.form_title || ""}:${item.is_filled ? import_utils.locales.getText("pisell2.text.filled") : import_utils.locales.getText("pisell2.text.not-filled")}`;
|
29
31
|
}).join(";");
|
30
32
|
};
|
33
|
+
var clientVariantClose;
|
34
|
+
var setClientVariantClose = (fn) => {
|
35
|
+
clientVariantClose = fn;
|
36
|
+
};
|
37
|
+
var getClientVariantClose = () => {
|
38
|
+
return clientVariantClose;
|
39
|
+
};
|
31
40
|
// Annotate the CommonJS export names for ESM import in node:
|
32
41
|
0 && (module.exports = {
|
33
|
-
|
42
|
+
getClientVariantClose,
|
43
|
+
getWaiverTitle,
|
44
|
+
setClientVariantClose
|
34
45
|
});
|