feat(project): restore product list drawer and detail prototype

This commit is contained in:
2026-02-22 09:41:32 +08:00
parent 3647bebf19
commit 99a947cad4
13 changed files with 3043 additions and 394 deletions

View File

@@ -140,15 +140,60 @@ export interface ProductListItemDto {
tags: string[];
}
/** 套餐分组商品。 */
export interface ProductComboGroupItemDto {
productId: string;
productName: string;
quantity: number;
sortOrder: number;
}
/** 套餐分组。 */
export interface ProductComboGroupDto {
id: string;
items: ProductComboGroupItemDto[];
maxSelect: number;
minSelect: number;
name: string;
sortOrder: number;
}
/** SKU 规格属性。 */
export interface ProductSkuAttributeDto {
optionId: string;
templateId: string;
}
/** SKU 详情。 */
export interface ProductSkuDto {
attributes: ProductSkuAttributeDto[];
id: string;
isEnabled: boolean;
originalPrice: null | number;
price: number;
skuCode: string;
sortOrder: number;
stock: number;
}
/** 商品详情。 */
export interface ProductDetailDto extends ProductListItemDto {
addonGroupIds: string[];
comboGroups: ProductComboGroupDto[];
description: string;
imageUrls?: string[];
imageUrls: string[];
labelIds: string[];
notifyManager: boolean;
packingFee: null | number;
recoverAt: null | string;
remainStock: number;
skus: ProductSkuDto[];
soldoutReason: string;
sortWeight: number;
specTemplateIds: string[];
syncToPlatform: boolean;
timedOnShelfAt: null | string;
warningStock: null | number;
}
/** 商品列表查询参数。 */
@@ -170,22 +215,51 @@ export interface ProductDetailQuery {
/** 保存商品参数。 */
export interface SaveProductDto {
addonGroupIds?: string[];
categoryId: string;
comboGroups?: Array<{
items: Array<{
productId: string;
quantity: number;
sortOrder: number;
}>;
maxSelect: number;
minSelect: number;
name: string;
sortOrder: number;
}>;
description: string;
id?: string;
imageUrls?: string[];
labelIds?: string[];
kind: ProductKind;
name: string;
originalPrice: null | number;
packingFee?: null | number;
price: number;
skus?: Array<{
attributes: Array<{
optionId: string;
templateId: string;
}>;
isEnabled: boolean;
originalPrice: null | number;
price: number;
skuCode?: string;
sortOrder: number;
stock: number;
}>;
shelfMode: 'draft' | 'now' | 'scheduled';
sortWeight?: number;
specTemplateIds?: string[];
spuCode?: string;
status: ProductStatus;
stock: number;
storeId: string;
subtitle: string;
tags: string[];
tags?: string[];
timedOnShelfAt?: string;
warningStock?: null | number;
}
/** 删除商品参数。 */