diff --git a/TASK6_IMPLEMENTATION_SUMMARY.md b/TASK6_IMPLEMENTATION_SUMMARY.md new file mode 100644 index 00000000..c7f75dac --- /dev/null +++ b/TASK6_IMPLEMENTATION_SUMMARY.md @@ -0,0 +1,112 @@ +# Task 6: 商城商品详情页Banner图配置 - 实施完成 + +## 概述 +为商城类型盒子添加独立的商品详情页Banner图字段 `imgurl_banner`,解决当前 `imgurl_detail` 同时用于顶部Banner和底部详情图的问题。 + +## 字段用途说明 +- `imgurl` → 列表页封面图(小图) +- `imgurl_banner` → 详情页顶部Banner图(新增) +- `imgurl_detail` → 详情页底部详情图 + +## 已完成的修改 + +### 1. 数据库 ✅ +**文件**: `server/HoneyBox/scripts/add_imgurl_banner.sql` +- 添加 `imgurl_banner` 字段(NVARCHAR(500) NULL) +- 包含字段存在性检查,避免重复添加 + +**执行方式**: +```bash +# 在 SQL Server Management Studio 或命令行执行 +sqlcmd -S localhost -d honey_box -i server/HoneyBox/scripts/add_imgurl_banner.sql +``` + +### 2. 后端实体 ✅ +**文件**: `server/HoneyBox/src/HoneyBox.Model/Entities/Good.cs` +- 添加 `ImgUrlBanner` 属性(string?) + +### 3. 后端 DTO ✅ +**文件**: `server/HoneyBox/src/HoneyBox.Model/Models/Goods/GoodsModels.cs` +- `GoodsInfoDto` 添加 `imgurl_banner` 字段 +- 使用 `[JsonPropertyName("imgurl_banner")]` 保持 snake_case 格式 + +### 4. 后台管理配置 ✅ +**文件**: `server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/config/typeFieldConfig.ts` +- `GoodsTypeFieldConfig` 接口添加 `showBannerImage` 字段 +- 商城类型(type=10)配置 `showBannerImage: true` +- 其他类型保持 `showBannerImage: false` + +### 5. 后台管理 - 新增对话框 ✅ +**文件**: `server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsAddDialog.vue` +- 添加 Banner 图上传组件(仅商城类型显示) +- 添加表单验证规则 +- 添加到提交数据中 + +### 6. 后台管理 - 编辑对话框 ✅ +**文件**: `server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsEditDialog.vue` +- 添加 Banner 图上传组件(仅商城类型显示) +- 添加表单验证规则 +- 加载和保存 Banner 图数据 + +### 7. 小程序前端 ✅ +**文件**: `honey_box/pages/mall/detail.vue` +- 修改顶部 Banner 图片源:从 `imgurl_detail || imgurl` 改为 `imgurl_banner || imgurl` +- 底部详情图继续使用 `imgurl_detail` + +## 数据库迁移 SQL + +```sql +-- 为 goods 表添加 imgurl_banner 字段 +-- 用于商城详情页顶部 banner 图 + +USE honey_box; +GO + +-- 添加 imgurl_banner 字段 +IF NOT EXISTS ( + SELECT * FROM sys.columns + WHERE object_id = OBJECT_ID(N'dbo.goods') + AND name = 'imgurl_banner' +) +BEGIN + ALTER TABLE dbo.goods + ADD imgurl_banner NVARCHAR(500) NULL; + + PRINT 'Column imgurl_banner added successfully.'; +END +ELSE +BEGIN + PRINT 'Column imgurl_banner already exists.'; +END +GO + +PRINT 'Migration completed.'; +GO +``` + +## 使用说明 + +### 后台管理操作 +1. 进入"商品管理" → "盒子管理" +2. 新增或编辑商城类型(type=10)的盒子 +3. 会看到三个图片上传字段: + - **盒子封面图**:列表页显示的小图 + - **盒子详情图**:详情页底部的详情图 + - **商品详情页Banner图**:详情页顶部的大图(新增) +4. 上传对应图片后保存 + +### 前端显示逻辑 +- 详情页顶部:优先显示 `imgurl_banner`,如果没有则显示 `imgurl`(封面图) +- 详情页底部:显示 `imgurl_detail`(详情图) + +## 注意事项 +1. 只有商城类型(type=10)的盒子会显示 Banner 图上传字段 +2. Banner 图字段为可选(NULL),不影响现有数据 +3. 如果不上传 Banner 图,前端会自动使用封面图作为兜底 +4. Mapster 会自动映射新字段,无需额外配置 + +## 测试建议 +1. 执行 SQL 脚本添加字段 +2. 重启后端服务(如果需要) +3. 在后台管理中编辑一个商城类型盒子,上传 Banner 图 +4. 在小程序中查看该商品详情页,确认顶部显示 Banner 图,底部显示详情图 diff --git a/honey_box/pages/mall/detail.vue b/honey_box/pages/mall/detail.vue index da685101..88da6f73 100644 --- a/honey_box/pages/mall/detail.vue +++ b/honey_box/pages/mall/detail.vue @@ -7,7 +7,7 @@ - + diff --git a/honey_box/pages/shouye/index.vue b/honey_box/pages/shouye/index.vue index 416d7b9a..bcc84d75 100644 --- a/honey_box/pages/shouye/index.vue +++ b/honey_box/pages/shouye/index.vue @@ -191,6 +191,8 @@ // 下拉刷新的配置(可选, 绝大部分情况无需配置) downOption: { auto: false, + bgColor: '#ffffff', // 下拉区域背景色 + textColor: '#666666', // 下拉文字颜色 }, // 上拉加载的配置(可选, 绝大部分情况无需配置) upOption: { diff --git a/server/HoneyBox/scripts/add_imgurl_banner.sql b/server/HoneyBox/scripts/add_imgurl_banner.sql new file mode 100644 index 00000000..2d00e079 --- /dev/null +++ b/server/HoneyBox/scripts/add_imgurl_banner.sql @@ -0,0 +1,30 @@ +-- 为 goods 表添加 imgurl_banner 字段 +-- 用于商城详情页顶部 banner 图 + +USE honey_box; +GO + +-- 添加 imgurl_banner 字段 +IF NOT EXISTS ( + SELECT * FROM sys.columns + WHERE object_id = OBJECT_ID(N'dbo.goods') + AND name = 'imgurl_banner' +) +BEGIN + ALTER TABLE dbo.goods + ADD imgurl_banner NVARCHAR(500) NULL; + + PRINT 'Column imgurl_banner added successfully.'; +END +ELSE +BEGIN + PRINT 'Column imgurl_banner already exists.'; +END +GO + +-- 可选:将现有的 imgurl 复制到 imgurl_banner 作为初始值 +-- UPDATE dbo.goods SET imgurl_banner = imgurl WHERE imgurl_banner IS NULL AND imgurl IS NOT NULL; +-- GO + +PRINT 'Migration completed.'; +GO diff --git a/server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsAddDialog.vue b/server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsAddDialog.vue index 5ed1e805..785997c3 100644 --- a/server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsAddDialog.vue +++ b/server/HoneyBox/src/HoneyBox.Admin/admin-web/src/views/business/goods/components/GoodsAddDialog.vue @@ -327,7 +327,7 @@ 图片上传 - + + + + + + + + +