frontend-store/整版酒单功能使用指南.md

203 lines
5.8 KiB
Markdown
Raw Permalink Normal View History

2025-08-04 09:59:12 +08:00
# 整版酒单功能使用指南
## 功能概述
整版酒单功能允许用户创建包含多款啤酒的整页图片模板支持2-12款酒的灵活布局并可在小程序端一键生成个性化酒单图片。
## 核心特性
-**灵活规格选择** - 支持A4竖版/横版、正方形、自定义尺寸
-**多商品布局** - 支持2-12款酒的网格、列表、自由布局
-**可视化编辑** - 基于FastPoster的拖拽式设计器
-**变量绑定** - 自动生成变量名,支持动态数据填充
-**示例数据** - 内置示例数据,实时预览设计效果
-**模板管理** - 支持模板保存、复制、编辑、删除
-**小程序集成** - 无缝对接现有酒单生成流程
## 系统架构
```
frontend-store (管理端) frontend-fastposter (编辑器) 小程序端
↓ ↓ ↓
模板规格选择 → 可视化设计器 + 自动生成 → 数据填充 + 图片生成
↓ ↓ ↓
模板列表管理 ← 模板保存 + 预览图 ← Base64/OSS 图片
```
## 使用流程
### 1. 创建整版模板 (管理端)
1. **登录管理系统**
- 访问 `http://store.beerape.com/template/menu`
2. **选择规格**
- 点击"新建整版酒单"
- 选择画布尺寸、商品数量、布局方向
- 输入模板名称和描述
3. **设计模板**
- 自动跳转到FastPoster编辑器
- 系统自动生成对应数量的酒款区块
- 拖拽调整布局、修改样式、添加背景等
4. **保存模板**
- 点击编辑器中的"保存"按钮
- 选择私有/公共模板权限
### 2. 生成酒单图片 (小程序端)
1. **选择酒款**
- 在酒单页面点击"整页导出"
- 进入多选模式,选择要包含的酒款
2. **选择模板**
- 点击"下一步"进入模板选择页面
- 系统显示匹配商品数量的模板
- 选择心仪的模板样式
3. **生成图片**
- 点击"生成图片"
- 系统自动填充酒款数据到模板
- 生成高清图片供预览和保存
## 技术实现详情
### 前端组件结构
```
frontend-store/src/views/template/menu/
├── index.vue # 模板管理主页面
├── components/
│ ├── SpecSelector.vue # 规格选择组件
│ └── MenuDesignWizard.vue # 设计向导组件
└── api/
└── template.js # 模板API接口
```
### 变量命名规范
系统采用 `beer{index}_{field}` 的命名规范:
```javascript
// 第一款酒的变量
beer0_name // 酒款名称
beer0_style // 酒款风格
beer0_abv // 酒精度
beer0_ibu // 苦度值
beer0_price // 价格
beer0_spec // 规格
beer0_img // 图片URL
// 第二款酒以此类推
beer1_name, beer1_style, ...
```
### FastPoster集成
**自动生成功能:**
```javascript
// URL参数格式
/fastposter?mode=menu&itemCount=6&layout=grid&width=794&height=1123
// 自动生成的模板包含:
- 1个背景组件
- 1个标题组件 (vd: menu_title)
- N组酒款区块每组包含7个组件
- 背景框
- 酒款图片 (vd: beer{i}_img)
- 酒款名称 (vd: beer{i}_name)
- 酒款风格 (vd: beer{i}_style)
- 酒精度 (vd: beer{i}_abv)
- 苦度值 (vd: beer{i}_ibu)
- 价格 (vd: beer{i}_price)
- 规格 (vd: beer{i}_spec)
```
### 小程序数据映射
```javascript
// 小程序端数据映射示例
const params = { uuid: templateId }
selectedBeers.forEach((beer, i) => {
params[`beer${i}_name`] = beer.name
params[`beer${i}_style`] = beer.customStyle || ''
params[`beer${i}_abv`] = beer.abv || ''
params[`beer${i}_ibu`] = beer.ibu || ''
params[`beer${i}_price`] = beer.price1
params[`beer${i}_spec`] = beer.spec1
params[`beer${i}_img`] = beer.image
})
// 调用生成接口
genPoster(params).then(result => {
// result.base64 或 result.url
})
```
## 部署说明
### 1. 前端部署
**frontend-store 更新:**
```bash
# 安装依赖
npm install
# 构建生产版本
npm run build
# 部署到服务器
cp -r dist/* /var/www/store.beerape.com/
```
**frontend-fastposter 更新:**
```bash
# 安装依赖
npm install
# 构建生产版本
npm run build
# 部署到服务器
cp -r dist/* /var/www/bar.beerape.com/fastposter/
```
### 2. 后端配置
无需修改后端代码,现有的 `/bar/poster/genPoster` 接口已支持多变量模板。
### 3. 小程序更新
只需更新 `templateSelect.vue` 中的参数映射逻辑即可。
## 常见问题
### Q1: 模板生成后为什么看不到酒款信息?
A1: 需要在编辑器中应用示例数据或手动填入变量值才能看到效果。保存后在小程序端会自动填充真实数据。
### Q2: 如何修改单个酒款区块的样式?
A2: 在FastPoster编辑器中选中对应的组件文字/图片),在右侧属性面板调整字体、颜色、大小等样式。
### Q3: 模板支持的最大酒款数量是多少?
A3: 理论上支持20款但建议不超过12款以保证显示效果和性能。
### Q4: 如何让空位自动隐藏?
A4: 在组件的vd绑定完成后FastPoster会自动处理空值情况。如果变量值为空或null对应组件不会显示。
### Q5: 生成的图片分辨率如何?
A5: 图片分辨率与模板画布设置一致A4模板通常为794×1123px可在规格选择时自定义更高分辨率。
## 后续优化建议
1. **批量操作增强** - 完善克隆、对齐等批量操作工具
2. **模板市场** - 建立公共模板分享机制
3. **样式预设** - 提供多种设计风格预设
4. **动态布局** - 支持可变行数的自适应布局
5. **数据源对接** - 支持直接从酒款库选择示例数据
---
## 技术支持
如有问题请联系开发团队或查看 [技术实现方案文档](./技术实现方案文档——"整版酒单生成"功能.md)。