v3.5.4 规格主图、门店使用规则与收银台 logo

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-21 17:36:53 +08:00
parent 62e61a9e63
commit 4d434c9c67
16 changed files with 276 additions and 48 deletions
@@ -188,6 +188,7 @@ export function mapSkuDto(sku: SkuWithSpecs) {
isDefault: sku.isDefault,
skuCode: sku.skuCode,
barcode69: sku.barcode69,
imageUrl: (sku as { imageUrl?: string | null }).imageUrl || undefined,
sortOrder: sku.sortOrder,
};
}
@@ -555,7 +555,8 @@ export class AdminProductsService {
bottlesPerUnit,
isDefault: !!row.isDefault,
sortOrder: row.sortOrder ?? i,
},
imageUrl: row.imageUrl?.trim() || null,
} as never,
});
await tx.commonProductSkuSpec.deleteMany({ where: { skuId } });
} else {
@@ -574,7 +575,8 @@ export class AdminProductsService {
bottlesPerUnit,
isDefault: !!row.isDefault,
sortOrder: row.sortOrder ?? i,
},
imageUrl: row.imageUrl?.trim() || null,
} as never,
});
skuId = created.id;
}
@@ -9,6 +9,7 @@ import {
IsObject,
IsOptional,
IsString,
MaxLength,
Min,
Max,
MinLength,
@@ -1400,6 +1401,12 @@ class AdminSkuRowDto {
@IsOptional()
@IsNumber()
sortOrder?: number;
/** 规格主图 URL;空则回落商品封面 */
@IsOptional()
@IsString()
@MaxLength(512)
imageUrl?: string | null;
}
export class SaveProductSkusDto {