客户(Client)小程序功能文档
一、概述
客户是餐饮商家/餐厅的采购人员,使用小程序进行商品采购、订单管理、结算等操作。
主题色:清新绿 #07c160
渐变色:linear-gradient(135deg, #07c160 0%, #1989fa 100%)
二、功能模块
1. 账户与认证
| 功能 |
接口路径 |
说明 |
| 账号密码登录 |
POST /api/mini/auth/login |
输入用户名密码登录 |
| 微信一键登录 |
POST /api/mini/auth/sms-login |
通过微信授权获取手机号登录 |
| 登出 |
POST /api/mini/auth/logout |
退出当前登录状态 |
| 修改密码 |
POST /api/mini/user/change-password |
自主修改登录密码 |
| 获取当前用户信息 |
GET /api/mini/auth/current-user |
获取登录用户基本信息 |
| 获取个人资料 |
GET /api/mini/client/profile |
获取客户详细信息 |
| 更新个人资料 |
PUT /api/mini/client/profile |
修改姓名、手机号等基本信息 |
2. 地址管理
| 功能 |
接口路径 |
方法 |
说明 |
| 获取地址列表 |
/api/mini/client/addresses |
GET |
获取客户的全部收货地址 |
| 获取地址详情 |
/api/mini/client/addresses/{addressId} |
GET |
查看单个地址的详细信息 |
| 创建地址 |
/api/mini/client/addresses |
POST |
新增收货地址 |
| 更新地址 |
/api/mini/client/addresses/{addressId} |
PUT |
编辑已有地址 |
| 删除地址 |
/api/mini/client/addresses/{addressId} |
DELETE |
删除地址 |
| 设置默认地址 |
/api/mini/client/addresses/{addressId}/set-default |
POST |
将某地址设为默认收货地址 |
3. 商品采购(外卖风格展示)
参考美团外卖、饿了么等平台风格,展示商品分类和商品列表,支持浏览、搜索、加购。
3.1 商品分类与列表
| 功能 |
接口路径 |
方法 |
说明 |
| 获取商品分类 |
/api/mini/client/product-categories |
GET |
获取商品分类及分类下的商品(外卖风格左侧分类栏) |
| 获取商品列表 |
/api/mini/client/products |
GET |
按分类/关键词分页查询商品(支持搜索) |
3.2 价格表
| 功能 |
接口路径 |
方法 |
说明 |
| 获取当前价格表 |
/api/mini/client/price-list |
GET |
获取当前生效的价目表(含商品价格) |
| 获取价格表商品 |
/api/mini/client/price-list/products |
GET |
分页获取价格表中的商品列表 |
3.3 外卖风格页面布局
参考美团外卖、饿了么等主流外卖平台,页面采用以下布局:
┌─────────────────────────────────────┐
│ 🔍 搜索商品... │ ← 顶部搜索栏
├─────────────────────────────────────┤
│ ┌──────┬─────────────────────────┐ │
│ │ 蔬菜 │ ┌─────┐ ┌─────┐ ┌────┐│ │
│ ├──────┤ │白菜 │ │萝卜 │ │土豆 ││ │ ← 右侧商品网格
│ │ 水果 │ │2.5元│ │1.8元│ │2.0元││ │
│ ├──────┤ └─────┘ └─────┘ └────┘│ │
│ │ 肉类 │ ┌─────┐ ┌─────┐ ┌────┐│ │
│ ├──────┤ │猪肉 │ │牛肉 │ │羊肉 ││ │
│ │ 禽蛋 │ │15元 │ │38元 │ │42元 ││ │
│ ├──────┤ └─────┘ └─────┘ └────┘│ │
│ │ 海鲜 │ │ │
│ ├──────┤ │ │
│ │ 调料 │ │ │
│ └──────┴─────────────────────────┘ │
├─────────────────────────────────────┤
│ 🛒 购物车 ¥128 │ ← 底部购物车悬浮栏
│ [去结算(3件)] │
└─────────────────────────────────────┘
3.4 商品卡片样式
每个商品卡片展示以下信息:
┌────────────────────┐
│ │
│ [商品图片] │ ← 商品图片(支持懒加载)
│ │
├────────────────────┤
│ 新鲜大白菜 │ ← 商品名称
│ 斤 │ ← 规格单位
├────────────────────┤
│ ¥2.50 │ ← 价格(醒目展示)
│ [+ 添加] │ ← 添加按钮
└────────────────────┘
3.5 商品详情弹窗
点击商品卡片弹出详情:
┌─────────────────────────────────────┐
│ [×] │
│ ┌─────────────────────────────┐ │
│ │ │ │
│ │ [商品大图] │ │
│ │ │ │
│ └─────────────────────────────┘ │
│ │
│ 新鲜大白菜 │
│ 规格:斤 / 公斤 │
│ │
│ ¥2.50/斤 ¥5.00/公斤 │
│ │
│ 商品描述:产地直供,新鲜采摘... │
│ │
├─────────────────────────────────────┤
│ ┌───────────────────────────────┐ │
│ │ 购买数量: [-] [1] [+] │ │
│ └───────────────────────────────┘ │
│ │
│ [ 加入购物车 ] │
└─────────────────────────────────────┘
3.6 搜索功能
顶部搜索栏支持:
- 关键词搜索商品
- 热门搜索推荐
- 搜索历史记录
- 搜索结果高亮显示
3.7 购物车交互
底部购物车悬浮栏:
┌─────────────────────────────────────┐
│ 🛒 ¥128 │
│ │
│ ┌───────────────────────────────┐ │
│ │ 蔬菜 共3件 │ │ ← 按分类展示
│ ├───────────────────────────────┤ │
│ │ 白菜 ¥2.50 × 2 [-][+]| │
│ │ 萝卜 ¥1.80 × 1 [-][+]| │
│ ├───────────────────────────────┤ │
│ │ 肉类 共1件 │ │
│ ├───────────────────────────────┤ │
│ │ 猪肉 ¥15.00 × 1 [-][+]| │
│ └───────────────────────────────┘ │
│ │
│ [ 清空购物车 ] [去结算(4件)] │
└─────────────────────────────────────┘
3.8 特色功能
| 功能 |
说明 |
| 猜你喜欢 |
根据采购历史推荐商品 |
| 限时特价 |
突出显示特价商品 |
| 批量采购 |
支持批量添加同类商品 |
| 价格波动提示 |
价格变动时显示提示 |
3.9 分类切换动画
左侧分类切换时:
- 平滑滚动动画
- 右侧商品列表联动切换
- 顶部固定分类名称(吸顶效果)
4. 购物车
| 功能 |
接口路径 |
方法 |
说明 |
| 获取购物车列表 |
/api/mini/client/cart |
GET |
查看购物车全部商品 |
| 添加商品到购物车 |
/api/mini/client/cart |
POST |
添加商品,指定数量 |
| 更新商品数量 |
/api/mini/client/cart/{cartId} |
PUT |
修改购物车中某商品的数量 |
| 删除单个商品 |
/api/mini/client/cart/{cartId} |
DELETE |
从购物车移除单个商品 |
| 清空购物车 |
/api/mini/client/cart |
DELETE |
一键清空全部商品 |
| 批量删除商品 |
/api/mini/client/cart/batch |
DELETE |
批量移除购物车商品 |
| 订单预览 |
/api/mini/client/orders/preview |
POST |
下单前预览订单信息(价格版本、商品明细、金额) |
| 从购物车创建订单 |
/api/mini/client/orders/from-cart |
POST |
将购物车商品合并下单 |
5. 订单管理
| 功能 |
接口路径 |
方法 |
说明 |
| 直接创建订单 |
/api/mini/client/orders |
POST |
基于价格表直接下单 |
| 获取订单列表 |
/api/mini/client/orders |
GET |
分页查询订单(支持状态筛选) |
| 获取订单详情 |
/api/mini/client/orders/{orderId} |
GET |
查看订单详细信息 |
| 发起取消申请 |
/api/mini/client/orders/{orderId}/cancel |
POST |
申请取消订单(需运营审核) |
| 直接取消订单 |
/api/mini/client/orders/{orderId}/direct-cancel |
POST |
直接取消未支付订单 |
| 确认收货 |
/api/mini/client/orders/{orderId}/confirm-receive |
POST |
确认商品已送达 |
| 查看配送进度 |
/api/mini/client/orders/{orderId}/delivery-progress |
GET |
查看实时配送状态和配送员信息 |
| 催单 |
/api/mini/client/orders/{orderId}/urge |
POST |
催促配送 |
订单状态说明
| 状态值 |
显示文本 |
说明 |
| pending_payment |
待支付 |
等待客户支付 |
| pending_review_cancel |
待审核取消 |
取消申请待运营审核 |
| pending_delivery |
待分配配送 |
已支付,等待分配配送员 |
| delivering |
配送中 |
配送员正在配送 |
| partial_delivered |
部分送达 |
部分商品已送达 |
| pending_confirm |
待确认收货 |
等待客户确认收货 |
| completed |
已完结 |
订单已完成 |
| cancelled |
已取消 |
订单已取消 |
6. 支付
| 功能 |
接口路径 |
方法 |
说明 |
| 发起微信支付 |
/api/mini/client/orders/{orderId}/wechat-pay |
POST |
调起微信支付 |
| 查询支付状态 |
/api/mini/client/orders/{orderId}/pay-status |
GET |
查询订单支付结果 |
| 获取支付配置 |
/api/payment/config |
GET |
获取微信支付相关配置 |
说明:支持线上微信支付和线下转账等方式,具体由运营配置。
7. 发票管理
| 功能 |
接口路径 |
方法 |
说明 |
| 申请开票 |
/api/mini/client/invoices |
POST |
基于订单申请开具发票 |
| 获取可开票订单 |
/api/mini/client/invoices/available-orders |
GET |
查询可申请开票的订单 |
| 获取发票列表 |
/api/mini/client/invoices |
GET |
分页查询发票(支持状态筛选) |
| 获取发票详情 |
/api/mini/client/invoices/{invoiceId} |
GET |
查看发票详细信息 |
| 获取发票汇总 |
/api/mini/client/invoices/summary |
GET |
查看已开票金额汇总 |
| 下载发票 |
/api/mini/client/invoices/{invoiceId}/download |
GET |
下载发票文件 |
发票状态说明
| 状态值 |
显示文本 |
说明 |
| pending |
待开票 |
申请已提交,等待开票 |
| issued |
已开票 |
发票已开具 |
| cancelled |
已作废 |
发票已作废 |
8. 结算与退款
| 功能 |
接口路径 |
方法 |
说明 |
| 获取结算列表 |
/api/mini/client/settlements |
GET |
分页查询结算记录 |
| 获取结算统计 |
/api/mini/client/settlements/statistics |
GET |
查看结算金额汇总 |
| 获取退款列表 |
/api/mini/client/refunds |
GET |
分页查询退款记录 |
| 获取退款统计 |
/api/mini/client/refunds/statistics |
GET |
查看退款金额汇总 |
9. 消息通知
| 功能 |
接口路径 |
方法 |
说明 |
| 获取消息列表 |
/api/message/list |
GET |
分页查询系统消息 |
| 获取未读消息数 |
/api/message/unread-count |
GET |
获取未读消息数量 |
| 发送消息 |
/api/message/send |
POST |
给其他用户发送消息 |
| 全部标记已读 |
/api/message/mark-all-read |
POST |
将所有消息标记为已读 |
10. 数据统计
| 功能 |
接口路径 |
方法 |
说明 |
| 仪表盘统计 |
/api/mini/client/dashboard/statistics |
GET |
获取客户订单、金额等统计数据 |
三、页面结构
pages/client/
├── home/ # 首页/商品采购(外卖风格)
│ └── home.vue # 商品分类+列表+购物车(一体化页面)
├── cart/ # 购物车
│ └── cart.vue # 购物车详情页(可从首页底部展开)
├── product/ # 商品详情
│ └── detail.vue # 商品详情弹窗/页面
├── order/ # 订单模块
│ ├── order.vue # 订单列表
│ ├── create/ # 创建订单
│ │ └── create.vue # 订单确认页(选择地址、备注)
│ ├── detail/ # 订单详情
│ │ └── detail.vue # 订单详情页
│ └── pay/ # 支付
│ └── pay.vue # 支付页面
├── address/ # 地址管理
│ └── address.vue # 收货地址列表/管理
├── settlement/ # 结算
│ └── settlement.vue # 结算记录页
├── refund/ # 退款
│ └── refund.vue # 退款记录页
├── invoice/ # 发票
│ └── invoice.vue # 发票申请/列表
└── profile/ # 个人中心
└── profile.vue # 个人资料、设置
四、状态标签样式
// 待支付/待处理
.status-tag.warning { background: #fff7e6; color: #ff976a; }
// 配送中/进行中
.status-tag.primary { background: #e6f7ff; color: #1989fa; }
// 已完成/成功
.status-tag.success { background: #f6ffed; color: #07c160; }
// 已取消/异常
.status-tag.danger { background: #fff1f0; color: #ee0a24; }
// 已完结/禁用
.status-tag.info { background: #f5f5f5; color: #999; }
五、外卖风格界面设计规范
5.1 整体布局
| 元素 |
规范 |
| 页面宽度 |
最大 414px(适配主流手机) |
| 内边距 |
左右 20rpx |
| 卡片圆角 |
12rpx |
| 阴影 |
0 2px 8px rgba(0, 0, 0, 0.08) |
5.2 左侧分类栏
| 元素 |
规范 |
| 宽度 |
180rpx(固定) |
| 背景色 |
#f5f5f5 |
| 选中背景 |
#ffffff |
| 文字大小 |
26rpx |
| 行高 |
100rpx |
| 选中样式 |
左侧 4rpx 主题色边框 |
5.3 右侧商品区
| 元素 |
规范 |
| 商品卡片宽度 |
(750rpx - 180rpx - 40rpx) / 2 ≈ 265rpx |
| 商品图片高度 |
200rpx |
| 图片圆角 |
8rpx |
| 商品名称 |
26rpx,最多2行,超出省略 |
| 价格 |
32rpx,主题色,加粗 |
| 单位 |
22rpx,灰色 |
5.4 商品卡片交互
| 状态 |
样式 |
| 默认 |
白色背景,轻微阴影 |
| 点击 |
轻微缩小 transform: scale(0.98) |
| 无货 |
图片置灰,添加"暂时缺货"标签 |
5.5 底部购物车栏
| 元素 |
规范 |
| 高度 |
100rpx |
| 背景色 |
#333333 |
| 购物车图标 |
60rpx × 60rpx,顶部 -30rpx 悬浮 |
| 数量角标 |
红色圆形,右侧 8rpx,上方 -8rpx |
| 总价 |
白色,32rpx,加粗 |
| 结算按钮 |
主题色背景,宽度 200rpx,圆角 40rpx |
5.6 添加按钮样式
| 类型 |
样式 |
| 加号按钮 |
圆形 44rpx,主题色边框,+ 图标 |
| 数量显示 |
宽度 40rpx,居中 |
| 减少按钮 |
同加号按钮,图标变为 - |
六、交互规范
按钮样式
| 类型 |
样式 |
圆角 |
| 主要按钮 |
实心背景 $client-primary |
24rpx |
| 次要按钮 |
边框样式 |
24rpx |
| 文字按钮 |
无背景无边框 |
- |
表单验证
- 实时校验
- 错误提示:红色文字 + 底部提示
- 必填标识:红色星号
列表操作
- 查看:跳转详情
- 编辑:跳转编辑页或弹窗
- 删除:二次确认弹窗
七、技术说明
- 框架:uni-app + Vue3 + TypeScript
- UI 组件:Vant Weapp
- 状态管理:Pinia
- 接口前缀:
/api/mini/
- 金额单位:API 传分(整数),前端展示元(除以100,保留2位小数)
- 时间格式:前端展示
YYYY-MM-DD HH:mm:ss