零售门店管理数据可视化平台,提供实时销售分析、库存监控和多维度 KPI 指标展示。
经理人看板面向零售行业门店管理者,解决以下核心问题:
- 销售数据分散 - 整合多门店、多品类的销售数据,提供统一视图
- 决策缺乏数据支撑 - 通过 16 项核心 KPI 指标,量化经营状况
- 库存管理粗放 - 实时监控库存周转、缺货预警、滞销分析
| 模块 | 功能说明 |
|---|---|
| 销售分析 | 销售额/毛利/客单价趋势、门店排名、同比环比分析 |
| 库存监控 | 库存周转率、缺货预警、滞销商品识别 |
| 多维筛选 | 按时间范围、门店、品类、区域灵活筛选 |
| 可视化看板 | 可拖拽布局、自定义图表组件、数据导出 |
销售类:销售额、毛利额、毛利率、促销扣除、销售件数、客单价、交易笔数
库存类:库存数量、库存金额、库存周转率、缺货率
客户类:连带率、复购率、品类渗透率
商品类:动销率、SKU数量
- 时间:日/周/月粒度,支持自定义日期范围
- 门店:支持多门店选择、区域汇总
- 品类:三级品类树结构(大类→中类→小类)
| 层级 | 技术选型 |
|---|---|
| 前端 | Vue 3 + TypeScript + Vite + Element Plus + ECharts + Pinia |
| 后端 | Spring Boot 3.2.5 + MyBatis Plus + MySQL 8.0 |
| API 文档 | Knife4j (Swagger 增强) |
| Java 版本 | JDK 17 |
manager-dashboard/
├── frontend/ # 前端工程
│ ├── src/
│ │ ├── api/ # API 接口封装
│ │ ├── components/ # 通用组件
│ │ │ ├── charts/ # 图表组件 (柱状图/折线图/饼图/表格)
│ │ │ └── filters/ # 筛选组件 (时间/门店/品类)
│ │ ├── composables/ # Vue 组合式函数
│ │ ├── layouts/ # 布局组件
│ │ ├── mock/ # Mock 数据
│ │ ├── router/ # 路由配置
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── types/ # TypeScript 类型定义
│ │ ├── utils/ # 工具函数
│ │ └── views/ # 页面组件
│ └── vite.config.ts # Vite 配置
│
├── backend/ # 后端工程 (Maven 多模块)
│ ├── manager-common/ # 通用模块:Result 封装、工具类、异常处理
│ ├── manager-model/ # 实体层:数据库实体类
│ ├── manager-dao/ # 数据访问层:MyBatis Mapper
│ ├── manager-service/ # 业务逻辑层
│ │ ├── aggregation/ # 数据聚合服务
│ │ ├── category/ # 品类服务
│ │ ├── dashboard/ # 看板服务
│ │ ├── dto/ # 数据传输对象 (24+ DTO)
│ │ ├── inventory/ # 库存服务
│ │ ├── metrics/ # KPI 指标计算
│ │ ├── mock/ # Mock 数据生成
│ │ ├── sales/ # 销售数据服务
│ │ └── store/ # 门店服务
│ ├── manager-web/ # Web 层:Controller、配置
│ └── sql/ # 数据库初始化脚本
│
└── CLAUDE.md # Claude Code 开发指南
┌─────────────────────────────────────────────────────────┐
│ Controller 层 │
│ (SalesDataController, StoreController) │
├─────────────────────────────────────────────────────────┤
│ Service 层 │
│ (SalesDataService, MetricsCalculator, StoreService) │
├─────────────────────────────────────────────────────────┤
│ DAO 层 │
│ (MyBatis Plus Mapper + XML 映射) │
├─────────────────────────────────────────────────────────┤
│ MySQL 数据库 │
└─────────────────────────────────────────────────────────┘
基础路径:/api
| 接口 | 方法 | 说明 |
|---|---|---|
/sales/summary |
GET | 销售汇总(支持日期范围、门店筛选) |
/sales/trend |
GET | 销售趋势(支持 DAY/WEEK/MONTH 粒度) |
/sales/rank/store |
GET | 门店销售排名 |
/sales/metrics |
GET | 16 项 KPI 指标 |
/sales/today |
GET | 今日销售 |
/sales/this-week |
GET | 本周销售 |
/sales/this-month |
GET | 本月销售 |
/stores |
GET | 门店列表 |
/stores/regions |
GET | 区域列表 |
/categories/tree |
GET | 品类树 |
| 表名 | 说明 |
|---|---|
store |
门店信息(编码、名称、区域、城市、地址、店长) |
sales_data |
销售数据(门店、品类、日期、销售额、数量、毛利) |
product_category |
品类信息(三级树形结构) |
dashboard |
看板配置 |
dashboard_component |
看板组件(图表类型、位置、数据源配置) |
dashboard_group |
组件分组 |
- Node.js 18+
- JDK 17
- MySQL 8.0+
- Maven 3.8+
mysql -u root -p < backend/sql/init.sqlcd backend
mvn clean install
mvn spring-boot:run -pl manager-web
# 服务启动于 http://localhost:8080
# API 文档 http://localhost:8080/api/doc.htmlcd frontend
npm install
npm run dev
# 访问 http://localhost:3000后端数据库配置位于 backend/manager-web/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/manager_dashboard
username: root
password: root # 请修改为实际密码当前版本使用 Mock 数据,后端服务层已预留数据库对接点(标记为 TODO)。
待完成工作:
- 对接实际数据库查询(替换 Mock 数据)
- 前端筛选功能完善
- 看板拖拽布局持久化
- 代码行数:16,500+ 行
- 后端:Java 6,600+ 行
- 前端:Vue/TS 8,500+ 行
- 文件数:124 个源文件
MIT